contents

뮤텍스(Mutex)세마포어(Semaphore) 는 둘 다 경쟁 상태(race condition)와 같은 문제를 방지하고 공유 리소스에 대한 접근을 관리하기 위해 동시성 프로그래밍에서 사용되는 동기화 기본 요소입니다. 비슷해 보이지만, 서로 다른 문제를 해결하며 결정적인 개념적 차이가 있습니다.

간단히 말해, 뮤텍스화장실 열쇠 하나와 같습니다. 한 번에 한 사람만 열쇠를 가질 수 있습니다. 세마포어똑같은 스터디룸 여러 개에 대한 열쇠 꾸러미와 같습니다. 만약 방이 5개 있다면, 5명이 열쇠를 하나씩 가져가 들어갈 수 있고, 6번째 사람은 기다려야 합니다.


뮤텍스 (상호 배제) 🔑

뮤텍스상호 배제(Mutual Exclusion) 의 줄임말로, 간단한 잠금(locking) 메커니즘입니다. 그 목적은 특정 코드 조각이나 공유 리소스에 한 번에 오직 하나의 스레드만 접근할 수 있도록 보장하는 것입니다. 이렇게 보호되는 코드 섹션을 임계 구역(critical section) 이라고 합니다.

핵심 개념 및 비유

1인용 공중 화장실을 상상해 보세요. 열쇠는 단 하나입니다.

이 열쇠는 한 번에 한 사람만 안에 있도록 보장하여 혼란을 방지합니다.

주요 특징


세마포어 🚦

세마포어는 더 일반적인 신호(signaling) 메커니즘입니다. 그 목적은 _N_개의 동일한 리소스로 구성된 풀(pool)에 대한 접근을 제어하는 것입니다. 내부 카운터를 사용하여 사용 가능한 리소스가 몇 개인지 추적합니다.

핵심 개념 및 비유

똑같은 스터디룸 5개가 있는 도서관을 상상해 보세요. 안내 데스크에는 열쇠 5개가 있습니다.

주요 특징


주요 차이점 요약

특징 뮤텍스 세마포어
목적 상호 배제 (오직 하나의 스레드만 접근하도록 보장) 동기화 (리소스 풀에 대한 접근 제어)
상태 이진 (잠김/잠금 해제) 정수 (음수가 아닌 카운트)
소유권 있음. 잠근 스레드가 반드시 잠금을 해제해야 함. 없음. 어떤 스레드든 signal을 호출하여 리소스를 해제할 수 있음.
비유 화장실 열쇠 하나. N개의 스터디룸에 대한 N개의 동일한 열쇠 꾸러미.
메커니즘 잠금(Locking) 메커니즘 신호(Signaling) 메커니즘

결론적으로, 배타적인 접근을 보장하기 위해 공유 리소스를 보호해야 할 때는 뮤텍스를 사용하세요. 리소스 풀에 접근할 수 있는 스레드의 수를 제한해야 할 때는 세마포어를 사용하세요.

references